1. Field of the Invention
The present invention relates generally to a system and method for music and/or video playback, and more particularly, providing to the user recommendations of items which have not yet been sampled by the user, based on a list of items already sampled by the user, utilizing a method for the dynamic addition, subtraction and sorting of a queue of items for playback.
2. Description of Related Art
The concept of a playlist is old, i.e. a static list of items to be played one by one through its entirety, in the order listed in the playlist. So far, only rudimentary attempts at dynamic playback have been made, consisting mainly of randomizing the order in which selections from the playlist are played. Some attempts have been made to let people quickly create playlists based on particular artists, or albums, or styles of music. However, all of them are still a static list after they are created, and don""t automatically reorder themselves in a pleasing way, or incorporate new content which would fit with them as it is made available. Additionally, any slightly complex concept such as building a playlist which contains more than one piece of meta-data, such as, for example, more than one artist, typically requires complex Boolean logic statements to build, making such playlist creation processes inaccessible to those unskilled in Boolean techniques.
A system is needed that is easy to use, adapts to personal tastes, and can easily add or subtract music or videos, as they become available. Such a system should provide more than random sorting and shuffle-play options to overcome the deficiencies of a static playlist, so that the playlist becomes dynamic.
It is therefore a principal object of the present invention to provide a dynamic playlist system and method for a dynamic playlist of digital items that automatically adds items to, or subtracts items from, the playlist, as the items become available.
An object of the present invention is to provide the dynamic playlist system where the data items are music or video items.
Another object of the present invention is to provide a dynamic playlist that dynamically adapts to usage patterns.
Another object of the present invention is to provide a dynamic playlist that dynamically adapts to personal preferences.
Another object of the present invention is to provide a dynamic playlist that is easy to use.
The above objects are obtained according to the present invention in which a method and system is provided for creating a dynamic playlist including meta-data having potential association with a respective content item configured to be played on a content player.
The system maintains a database of linkages between elements associated with content items as well as weighted linkages between elements and respective properties. The system is a hybrid content based and collaborative filtering system, wherein the insertion of a new item into the database results in the new item sharing preference weights and number of preferences associated with items pre-existing in the database. Thus, an initial input query list of items potentially results in the return of many content items available from one or more content providers, wherein the retrieved content, called a xe2x80x9cdynamic playlistxe2x80x9d, has a high correlation with the user""s preference or with whatever other basis was used to frame the input list, and individual content items on the dynamic playlist may not have been previously experienced by the user.
A dynamic playlist is a list of items that can be played in linear order, as is done with a traditional playlist, or in more exotic sequences after application of sorting or ordering algorithms. User profiles can be applied to the sorting process, i.e., by ranking items based on the user""s meta-data, which can include usage patterns or explicit preferences, and further, by order reflected by usage of other users.
The most useful aspect of a dynamic playlist is the dynamic addition and subtraction of playlist items. This is accomplished by accepting at least one meta category defined as a set of at least one criterion, where each criterion has a potential association with a content item, and retrieving from at least one content provider a first result set of meta-data fitting any of the criteria, wherein the first result set enables acquisition of content items to be played. Next, a filtered first result set is calculated by application of a collaborative filtering query algorithm to the first result set, and then the filtered first result set is added to the dynamic playlist. Next, the system seeds a next meta-category, if any, with the result set and repeating the retrieving, calculating, inserting and seeding steps until all meta-categories have been processed. In accordance with this method, an initial meta-category of selection preferences potentially results in the return of many content items available from one or more content providers, wherein the retrieved content has a high correlation with the user""s preference or with whatever other basis was used to frame the meta-category.
The collaborative filtering query algorithm can be arranged to include the dynamic playlist itself, which becomes especially meaningful subsequent successive playlist updates. The algorithm can also include user play pattern data including manual intervention detected during playing of contents associated with the dynamic playlist, or rating data indicative of preference or distaste for selected content items.
The method for creating a dynamic playlist also includes accessing a database configured to include meta-data elements, wherein each element defines at least one relationship between a user and a respective content item, identifying at least one meta-category from the database, and updating the database to include at least parts of the dynamic playlist.
The method for creating a dynamic playlist also includes applying a reordering algorithm to the filtered first result set to obtain the dynamic playlist. The ordering algorithm is selected from a group of algorithms including a ranking algorithm, a random element removal algorithm, a retention of top N most popular elements algorithm, and a pairing sort algorithm.
In a separate embodiment, a respective second result set is obtained for each meta-category, wherein the respective second result set includes meta-data identifying all content items fitting any at least one criterion of each meta-category. An ordering algorithm is applied to the second result set to obtain the dynamic playlist.
The pairing sort algorithm begins with selecting a first and second item from the playlist, determining if both elements are in an elements table, inserting whichever element is missing into the elements table, incrementing by 1 a pair link between the first and second elements, and incrementing by 1 a counter associated with the second element. If a pair link exists between the first and second items, the algorithm inserts a new pair link of strength 1 between the first and second items and increments by 1 a counter associated with the second item. If a pair link does not exist between the first and second items, and if another item remains in the playlist, the algorithm identifies the first item as the second item and the other item as the second item. The sequence is repeated until no items remain in the playlist.
Alternatively, the input set can either be associated with other input sets by a profile ID, or be a seed user profile, i.e., a single individual or source that submits the input sets, or the input set is simply collected on a stand-alone basis. This allows the creation of aggregate profiles between a series of queries or seed actions. Finally, if the action is a query, several profile ID""s could be used to create a composite view of the multiple profiles, such as, for example, to find a song both a husband and wife would enjoy.
The pairing sort algorithm as applied to at least one user profile begins with selecting a seed user profile, and processes the steps of comparing the seed user profile against all available profiles, ranking all compared profiles by similarity to the selected seed profile, clustering the most similar profiles with the seed profile, counting the frequency of all elements in the clustered profiles, building a hash profile of the most frequent items to represent each respective cluster, placing the respective hash profile in a hash table, removing the seed and clustered profiles from the profile list, identifying a next user profile, if available, as the seed user profile, and continuing the sequence until no profiles are available.